#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>


//匿名结构体类型

//struct
//{
//	int a;
//	char b;
//	float c;
//}x;
//struct
//{
//	int a;
//	char b;
//	float c;
//}* p;
//int main()
//{
//	p = &x;
//	return 0;
//}

//struct Node
//{
//	int data;//数据域
//	struct Node* Next;//指针域
//};

//struct Stu
//{
//	char ch;
//	int a;
//}s1={'w',100},s2={'s',200};
//
//int main()
//{
//	return 0;
//}


//struct Stu
//{
//	char ch;
//	int a;
//}s1, s2;
//
//struct School
//{
//	float d;
//	struct Stu s1;
//	int x;
//	int arr[3];
//};
//int main()
//{
//	struct School Sn = { 3.14,{'m',666},999,{4,5,6} };
//	return 0;
//}



//#include<limits.h>
//int main()
//{
//	/*INT_MAX;
//	int a = 214799999999999;*/
//	int a = 10;
//	a = a++;
//	printf("%d", a);
//	return 0;
//}


//
//
//////练习1
//#include<stddef.h>
//struct S1
//{
//	char c1;
//	int i;
//	char c2;
//};
//struct S2
//{
//	char c1;
//	char c2;
//	int i;
//};
//int main()
//{
//	/*printf("        %d\n", sizeof(struct S1));
//	printf("        %d\n", sizeof(struct S2));*/
//
//	printf("  %d\n", offsetof(struct S1, c1));
//	printf("  %d\n", offsetof(struct S1, i));
//	printf("  %d\n", offsetof(struct S1, c2));
//
//	return 0;
//}

//struct S3
//{
//	double d;
//	char c;
//	int i;
//};
//struct S4
//{
//	char c1;
//	struct S3 s3;
//	double e;
//};
//int main()
//{
//	return 0;
//}

//#pragma pack(1)//讲默认对齐数改为1
//struct S5
//{
//	char ch1;
//	int x;
//	char ch2;
//};
//#pragma pack()  //取消默认对齐数
//int main()
//{
//	printf("%d\n", sizeof(struct S5));
//	return 0;
//}

struct S
{
	int data[1000];
	int num;
};
//结构体传参
void print1(struct S s)
{
	printf("%d\n", s.num);//点操作符解引用
}
//结构体地址传参
void print2(struct S* ps)
{
	printf("%d\n", ps->num);//指针通过->解引用
}
int main()
{
	struct S s = { {1,2,3,4}, 1000 };

	print1(s); //传结构体
	print2(&s); //传地址
	return 0;
}